/**
 *Copyright (c) 2024 watereyes
 * safetymanagement is licensed under Mulan PubL v2.
 * You can use this software according to the terms and conditions of the Mulan
 * PubL v2.
 * You may obtain a copy of Mulan PubL v2 at:
 *          http://license.coscl.org.cn/MulanPubL-2.0
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PubL v2 for more details.
 */
package com.koron.purpose.mapper;

import com.koron.purpose.bean.ContributoryPlanBean;
import com.koron.purpose.bean.ContributoryPlanBeanDetail;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface ContributoryPlanMapper {
    /**
     * 列表查询
     * @param map
     * @return
     */
    List<Map> queryForList(Map map);

    /**
     * 统计 列表查询 总个数
     * @param map
     * @return
     */
    int countQueryForList(Map map);

    /**
     * 根据ID查询投入计划
     * @param id
     * @return
     */
    Map queryById(@Param("id") String id);

    /**
     * 新增投入计划
     * @param bean 投入计划 信息
     * @return
     */
    int insert(ContributoryPlanBean bean);

    /**
     * 修改投入计划
     * @param bean 投入计划 信息
     * @return
     */
    int update(ContributoryPlanBean bean);

    /**
     * 新增 投入计划明细
     * @param details
     */
    void insertDetails(@Param("details") List<ContributoryPlanBeanDetail> details);

    /**
     * 根据 投入计划id 删除 投入计划明细
     * @param contributoryPlanId
     * @return
     */
    int deleteDetailsByConId(@Param("contributoryPlanId") String contributoryPlanId);

    /**
     * 根据编号查询 投入计划 进行验重
     * @param serialNumber
     * @return
     */
    Integer changeSerialNumber(@Param("id") String id, @Param("serialNumber") String serialNumber);

    /**
     * 根据id 修改 投入计划 状态标记(0-审批中 1-审批通过 2-草稿)
     * @param id
     * @param status_flag 状态标记(0-审批中 1-审批通过 2-草稿)
     * @return
     */
    Integer updateConPlanStatusById(@Param("id") String id, @Param("status_flag") String status_flag);

    /**
     * 流程中的业务数据
     * @param id
     * @return
     */
    Map getProcessData(@Param("id") String id);

    /**
     * 根据 投入计划id 查询 投入计划明细
     * @param contributoryPlanId
     * @return
     */
    List<ContributoryPlanBeanDetail> getDetailById(@Param("contributoryPlanId") String contributoryPlanId);

    /**
     * 导出 列表查询
     * @param map
     * @return
     */
    List<Map> queryExportForList(Map map);

    /**
     * 根据id 删除 投入计划
     * @param id
     * @return
     */
    int deletePlan(@Param("id") String id);
}
